package main

import (
	"fmt"
	"runtime"
	"time"
)

func init() { //1.8版本之后就不需要这个了
	//获取当前电脑中逻辑 CPU 的数量
	fmt.Println("逻辑 CPU 的数量 -->", runtime.NumCPU()) //逻辑 CPU 的数量 --> 16

	//设置go程序执行的最大的CPU的数量：[1,256]
	n := runtime.GOMAXPROCS(runtime.NumCPU())
	fmt.Println(n)
}

func main() {
	////获取goRoot目录(go的安装目录)
	//fmt.Println("GOROOT -->", runtime.GOROOT()) //GOROOT --> D:/GO
	////获取操作系统
	//fmt.Println("os/platform -->", runtime.GOOS) //os/platform --> windows
	//
	////gosched
	//go func() {
	//	for i := 1; i < 5; i++ {
	//		fmt.Println("goroutine...")
	//	}
	//}()
	//
	//for i := 0; i < 4; i++ {
	//	//让出时间片，先让其他goroutine执行
	//	runtime.Gosched()
	//	fmt.Println("main...")
	//}

	//创建goroutine
	go func() {
		fmt.Println("goroutine开始。。。")
		//调用fun
		fun()
		fmt.Println("goroutine结束。。。")
	}()

	//睡一会
	time.Sleep(3 * time.Second)
}

func fun() {
	defer fmt.Println("defer...")
	//return //终止函数
	runtime.Goexit() //终止当前的goroutine
	fmt.Println("fun函数。。。")
}
